package review.model.singleton;

/**
 * 单例模式<br/>
 * 三）内部类，线程安全<br/>
 * @author me@longlonggo.com
 * @version 100-000-000<br/>
 * 创建日期：2018年9月16日 <br/>
 */
public class Singleton3 {
	//构造函数要定义为私有的，避免错误执行实例化
	private Singleton3() {}
	
	//优点：
	//1、没有使用并发锁，高并发环境下性能高
	//2、只有getSingleton2()被使用时，实例才会创建(巧妙使用了类和内部类的初始化加载方式)
	//3、内部类被声明为私有的，外部不能访问，只能通过getSingleton2()执行初始化，利用jvm的类初始化机制创建单例
	private static class SingletonHolder{
		private static final Singleton3 singletonObj = new Singleton3();
	}
	
	//返回单例对象
	public static Singleton3 getSingleton2() {
		return SingletonHolder.singletonObj;
	}
}
